package com.tyning.newcode.jz53_2;

/**
 * 剑指 Offer 53 - II. 0～n-1中缺失的数字
 * 一个长度为n-1的递增排序数组中的所有数字都是唯一的，并且每个数字都在范围0～n-1之内。在范围0～n-1内的n个数字中有且只有一个数字不在该数组中，请找出这个数字。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入: [0,1,3]
 * 输出: 2
 * 示例 2:
 * <p>
 * 输入: [0,1,2,3,4,5,6,7,9]
 * 输出: 8
 * <p>
 * <p>
 * 限制：
 * <p>
 * 1 <= 数组长度 <= 10000
 * https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/
 */

/**
 * @author haining
 */
public class Solution {
    public static void main(String[] args) {

    }

    public int missingNumberNew(int[] nums) {
        if(nums == null || nums.length < 1){
            return -1;
        }
        if(nums[0] != 0){
            return 0;
        }
        if(nums.length == 1){
            if(nums[0] == 1){
                return 0;
            }
            if(nums[0] == 0){
                return 1;
            }
        }
        for (int i = 0 ; i < nums.length-1 ; i++) {
            if (nums[i+1] - nums[i] > 1){
                return nums[i] + 1;
            }
        }
        return nums[nums.length - 1] + 1;
    }

    public int missingNumber(int[] nums) {
        if (nums == null){
            return 0;
        }
        if (nums.length <2){
            return nums[0] > 0 ? (nums[0] -1) : 1;
        }
        int tem = nums[0];
        for (int i = 1; i < nums.length; i++){
            if (nums[i] - tem > 1){
                return tem+1;
            } else {
                tem = nums[i];
            }
        }
        return nums[0] <= 0 ? (nums[nums.length -1] +1) : (nums[0] -1);
    }

}
